﻿using Runtime.Services.Battle.Entity;

namespace Runtime.Models {

    /// <summary>
    /// 进攻方数据集
    /// </summary>
    public interface IDFR_ReadOnlyBattleAttackSourceDictionaryModelBase : IDFR_ReadOnlyDictionaryModel<DFR_BattleEntityInstanceID, IDFR_BattleAttackSourceModelBase> {

        new IDFR_BattleAttackSourceDictionaryModelBase AsReadWrite();
    }

    /// <summary>
    /// 进攻方数据集
    /// </summary>
    public interface IDFR_BattleAttackSourceDictionaryModelBase : IDFR_ReadOnlyBattleAttackSourceDictionaryModelBase, IDFR_DictionaryModel<DFR_BattleEntityInstanceID, IDFR_BattleAttackSourceModelBase> {
    }

    [Implement(typeof(IDFR_ReadOnlyBattleAttackSourceDictionaryModelBase))]
    [Implement(typeof(IDFR_ReadOnlyDictionaryModel<DFR_BattleEntityInstanceID, IDFR_BattleAttackSourceModelBase>))]
    [Implement(typeof(IDFR_BattleAttackSourceDictionaryModelBase))]
    [Implement(typeof(IDFR_DictionaryModel<DFR_BattleEntityInstanceID, IDFR_BattleAttackSourceModelBase>))]
    internal sealed class DFR_BattleAttackSourceDictionaryModelBase : DFR_DictionaryModel<DFR_BattleEntityInstanceID, IDFR_BattleAttackSourceModelBase>,
        IDFR_ReadOnlyBattleAttackSourceDictionaryModelBase, IDFR_BattleAttackSourceDictionaryModelBase {

        public new IDFR_BattleAttackSourceDictionaryModelBase AsReadWrite() => this;
    }
}